a8dc9209d76165d1b55488a67d5d9a899e2221e5,framework/base/src/org/ofbiz/base/util/TimeDuration.java,TimeDuration,set,#Calendar#Calendar#,171

Before Change



        // this will be used to speed up time comparisons
        long targetMillis = calEnd.getTimeInMillis();
        long deltaMillis = targetMillis - calStart.getTimeInMillis();

        // shortcut for equal dates
        if (deltaMillis == 0) {
            return;
        }

        // compute elapsed years
        long yearMillis = 86400000 * calStart.getMinimum(Calendar.DAY_OF_YEAR);
        float units = deltaMillis / yearMillis;
        this.years = advanceCalendar(calStart, calEnd, (int) units, Calendar.YEAR);
        deltaMillis = targetMillis - calStart.getTimeInMillis();

        // compute elapsed months
        long monthMillis = 86400000 * calStart.getMinimum(Calendar.DAY_OF_MONTH);
        units = deltaMillis / monthMillis;
        this.months = advanceCalendar(calStart, calEnd, (int) units, Calendar.MONTH);
        deltaMillis = targetMillis - calStart.getTimeInMillis();

        // compute elapsed days
        units = deltaMillis / 86400000;
        this.days = advanceCalendar(calStart, calEnd, (int) units, Calendar.DAY_OF_MONTH);
        deltaMillis = targetMillis - calStart.getTimeInMillis();

        // compute elapsed hours
        units = deltaMillis / 3600000;
        this.hours = advanceCalendar(calStart, calEnd, (int) units, Calendar.HOUR);
        deltaMillis = targetMillis - calStart.getTimeInMillis();

        // compute elapsed minutes
        units = deltaMillis / 60000;
        this.minutes = advanceCalendar(calStart, calEnd, (int) units, Calendar.MINUTE);
        deltaMillis = targetMillis - calStart.getTimeInMillis();

        // compute elapsed seconds
        units = deltaMillis / 1000;

After Change


        long monthMillis = 86400000 * calStart.getMinimum(Calendar.DAY_OF_MONTH);
        units = deltaMillis / monthMillis;
        this.months = advanceCalendar(calStart, calEnd, (int) units, Calendar.MONTH);
        deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(), targetMillis);

        // compute elapsed days
        units = deltaMillis / 86400000;
        this.days = advanceCalendar(calStart, calEnd, (int) units, Calendar.DAY_OF_MONTH);
        deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(), targetMillis);

        // compute elapsed hours
        units = deltaMillis / 3600000;
        this.hours = advanceCalendar(calStart, calEnd, (int) units, Calendar.HOUR);
        deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(), targetMillis);

        // compute elapsed minutes
        units = deltaMillis / 60000;
        this.minutes = advanceCalendar(calStart, calEnd, (int) units, Calendar.MINUTE);
        deltaMillis = computeDeltaMillis(calStart.getTimeInMillis(), targetMillis);

        // compute elapsed seconds
        units = deltaMillis / 1000;